﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace B.S.BaseData.Domain.Entities.RBAC
{
    /// <summary>
    /// 表示系统中可分配的细粒度权限（操作或功能）。
    /// 对应数据库中的 'permissions' 表。
    /// </summary>
    public class Permission:BaseEntity
    {
        /// <summary>
        /// 权限的唯一标识符。
        /// 对应数据库中的 'id' 字段，主键，自增长。
        /// </summary>
        public int PermissionId { get; set; }

        /// <summary>
        /// 权限的名称或标识符。
        /// 对应数据库中的 'permission_name' 字段，非空，唯一。
        /// 例如："view_order"（查看订单），"create_order"（新增订单）。
        /// </summary>
        [Required]
        [MaxLength(255)]
        public string PermissionName { get; set; }

        /// <summary>
        /// 权限在界面上显示的名称。
        /// 对应数据库中的 'display_name' 字段，非空。
        /// 例如："查看订单"。
        /// </summary>
        [Required]
        [MaxLength(255)]
        public string DisplayName { get; set; }

        /// <summary>
        /// 权限所属的功能模块或类型。
        /// 对应数据库中的 'category' 字段，可为空。
        /// 例如："订单管理"，“任务管理”。
        /// </summary>
        [MaxLength(100)]
        public string Category { get; set; }

        /// <summary>
        /// 权限的详细描述。
        /// 对应数据库中的 'description' 字段，可为空。
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 权限的对应页面路径  只有顶级权限  也就是菜单权限才有这个字段 按钮级别默认权限为空
        /// 对应数据库中的 'description' 字段，可为空。
        /// </summary>
        public string? Pagepath { get; set; }=string.Empty;

        /// <summary>
        /// 父权限的ID
        /// 如果是顶级权限，则为null。
        /// </summary>
        public int? ParentId { get; set; } // long? 表示可空的长整型


        

        
    }

    
}
